package db;

import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import model.HouseModel;
import model.UrlModel;
import org.apache.commons.dbutils.QueryRunner;

import model.JdModel;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class MYSQLControl {

  //根据自己的数据库地址修改
  static DataSource ds = MyDataSource.getDataSource(
      "jdbc:mysql://127.0.0.1:3306/moviedata?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&serverTimezone=Hongkong");
  static QueryRunner qr = new QueryRunner(ds);

  //第一类方法
  public static void executeUpdate(String sql) {
    try {
      qr.update(sql);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  //第二类数据库操作方法
  public static void executeInsert(List<JdModel> data)
      throws SQLException {
    /*
     * 定义一个Object数组，行列
     * 3表示列数，根据自己的数据定义这里面的数字
     * params[i][0]等是对数组赋值，这里用到集合的get方法
     *
     */
    Object[][] params = new Object[data.size()][3];
    for (int i = 0; i < params.length; i++) {
      params[i][0] = data.get(i).getId();
      params[i][1] = data.get(i).getName();
      params[i][2] = data.get(i).getPrice();
    }
    qr.batch("insert into book (id, name, price)"
        + "values (?,?,?)", params);
    System.out.println("执行数据库完毕！" + "成功插入数据：" + data.size() + "条");

  }

  //第二类数据库操作方法
  public static void executeInsert1(List<HouseModel> data)
      throws SQLException {
    /*
     * 定义一个Object数组，行列
     * 3表示列数，根据自己的数据定义这里面的数字
     * params[i][0]等是对数组赋值，这里用到集合的get方法
     *
     */
    Object[][] params = new Object[data.size()][12];
    for (int i = 0; i < params.length; i++) {
      params[i][0] = data.get(i).getTitle();
      params[i][1] = data.get(i).getPrice();
      params[i][2] = data.get(i).getType();
      params[i][3] = data.get(i).getNum();
      params[i][4] = data.get(i).getCompany();
      params[i][5] = data.get(i).getContent();
      params[i][6] = data.get(i).getPerson();
      params[i][7] = data.get(i).getPhone();
      params[i][8] = data.get(i).getAddress();
      params[i][9] = data.get(i).getTimes();
      params[i][10] = data.get(i).getNumber();
      params[i][11] = data.get(i).getMode();
    }
    qr.batch(
        "insert into house (title, price,type,num,company,content,person,phone,address,times,number,mode)"
            + "values (?,?,?,?,?,?,?,?,?,?,?,?)", params);
    System.out.println("执行数据库完毕！" + "成功插入数据：" + data.size() + "条");

  }

  public static void executeInsert2(List<UrlModel> data)
      throws SQLException {
    /*
     * 定义一个Object数组，行列
     * 3表示列数，根据自己的数据定义这里面的数字
     * params[i][0]等是对数组赋值，这里用到集合的get方法
     *
     */
    Object[][] params = new Object[data.size()][1];
    for (int i = 0; i < params.length; i++) {
      params[i][0] = data.get(i).getUrl();
    }
    qr.batch("insert into links_url (url)"
        + "values (?)", params);
    System.out.println("执行数据库完毕！" + "成功插入数据：" + data.size() + "条");

  }

  public static List<UrlModel> sel()
      throws SQLException {
    /*
     * 定义一个Object数组，行列
     * 3表示列数，根据自己的数据定义这里面的数字
     * params[i][0]等是对数组赋值，这里用到集合的get方法
     *
     */
//    Object[][] params = new Object[data.size()][1];
//    for (int i = 0; i < params.length; i++) {
//      params[i][0] = data.get(i).getUrl();
//    }
    List<UrlModel> list = qr.query("select * from links_url",
        new BeanListHandler<UrlModel>(UrlModel.class));
//    for (UrlModel productJavaBean : list) {
//      System.out.println(productJavaBean);
//    }
//    List list=qr.execute("select * from links_url");
//    System.out.println("执行数据库完毕！" + "成功插入数据：" + data.size() + "条");
    return list;
  }
}